﻿#define _CRT_SECURE_NO_WARNINGS 1
//part1 rand的函数原型
//int rand(void);

//part2 rand函数的测试：
//#include<stdio.h>
//#include<stdlib.h>
//
//int main() {
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	return 0;
//}

//part3 srand的函数原型
//void srand (unsigned int seed);

//part4 time函数原型
//time_t time (time_t* timer);

//part5 time_t类型的说明：
//// 检查是否定义了 _CRT_NO_TIME_T 宏，如果未定义则执行后续代码
//#ifndef _CRT_NO_TIME_T
//    // 检查是否定义了 _USE_32BIT_TIME_T 宏
//#ifdef _USE_32BIT_TIME_T
//    // 如果定义了 _USE_32BIT_TIME_T 宏，将 time_t 定义为 __time32_t 类型
//typedef __time32_t time_t;
//#else
//    // 如果未定义 _USE_32BIT_TIME_T 宏，将 time_t 定义为 __time64_t 类型
//typedef __time64_t time_t;
//#endif
//#endif
//
//// 定义 __time32_t 类型为 long 类型
//typedef long __time32_t;
//// 定义 __time64_t 类型为 __int64 类型
//typedef __int64 __time64_t;

//part6 调⽤time函数返回时间戳
//time(NULL);//调⽤time函数返回时间戳，这⾥没有接收返回值

//part7 初步完成代码：
//#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//
//int main()
//{
//    //使用time函数的返回值设置种子
//    //因为srand的参数是unsigned int类型，我们将time函数的返回值强制类型转换
//    srand((unsigned int)time(NULL));
//    printf("%d\n", rand());
//    printf("%d\n", rand());
//    printf("%d\n", rand());
//    printf("%d\n", rand());
//    printf("%d\n", rand());
//    printf("%d\n", rand());
//    return 0;
//}

//part8 设置随机数的范围
//1.rand() % 100;//余数的范围是0~99
//2a + rand() % (b - a + 1)//范围是a-b

//part9 游戏最终实现代码：
//#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//int main()
//{
//    // 定义一个整型变量 input，用于存储用户的选择
//    int input = 0;
//    // 使用当前时间作为随机数种子，确保每次运行程序时生成的随机数不同
//    // time(null) 返回当前的时间戳，将其强制转换为 unsigned int 类型作为 srand 的参数
//    srand((unsigned int)time(null));
//    // 使用 do-while 循环，确保至少执行一次循环体
//    do
//    {
//        // 调用 menu 函数，显示菜单选项
//        menu();
//        // 提示用户输入选择
//        printf("请选择:>");
//        // 从标准输入读取一个整数，并将其存储到 input 变量中
//        scanf("%d", &input);
//        // 根据用户的输入，使用 switch 语句进行不同的处理
//        switch (input)
//        {
//            // 如果用户输入 1
//        case 1:
//            // 调用 game 函数开始游戏
//            game();
//            // 跳出 switch 语句
//            break;
//            // 如果用户输入 0
//        case 0:
//            // 输出游戏结束的提示信息
//            printf("游戏结束\n");
//            // 跳出 switch 语句
//            break;
//            // 如果用户输入的既不是 1 也不是 0
//        default:
//            // 提示用户选择错误，并要求重新选择
//            printf("选择错误，重新选择\n");
//            // 跳出 switch 语句
//            break;
//        }
//        // 只要 input 的值不为 0，就继续循环
//    } while (input);
//    // 程序正常结束，返回 0
//    return 0;
//}
//void menu()
//{
//	printf("***********************\n");
//	printf("****** 1. play ******\n");
//	printf("****** 0. exit ******\n");
//	printf("***********************\n");
//}
//int main()
//{
//    // 定义一个整型变量 input，用于存储用户的选择
//    int input = 0;
//    // 使用当前时间作为随机数种子，确保每次运行程序时生成的随机数不同
//    // time(null) 返回当前的时间戳，将其强制转换为 unsigned int 类型作为 srand 的参数
//    srand((unsigned int)time(null));
//    // 使用 do-while 循环，确保至少执行一次循环体
//    do
//    {
//        // 调用 menu 函数，显示菜单选项
//        menu();
//        // 提示用户输入选择
//        printf("请选择:>");
//        // 从标准输入读取一个整数，并将其存储到 input 变量中
//        scanf("%d", &input);
//        // 根据用户的输入，使用 switch 语句进行不同的处理
//        switch (input)
//        {
//            // 如果用户输入 1
//        case 1:
//            // 调用 game 函数开始游戏
//            game();
//            // 跳出 switch 语句
//            break;
//            // 如果用户输入 0
//        case 0:
//            // 输出游戏结束的提示信息
//            printf("游戏结束\n");
//            // 跳出 switch 语句
//            break;
//            // 如果用户输入的既不是 1 也不是 0
//        default:
//            // 提示用户选择错误，并要求重新选择
//            printf("选择错误，重新选择\n");
//            // 跳出 switch 语句
//            break;
//        }
//        // 只要 input 的值不为 0，就继续循环
//    } while (input);
//    // 程序正常结束，返回 0
//    return 0;
//}

part10 增加回答次数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void game()
{
	int r = rand() % 100 + 1;
	int guess = 0;
	int count = 5;
	while (count)
	{
		printf("\n你还有%d次机会\n", count);
		printf("请猜数字>:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜⼩了\n");
		}
		else if (guess > r)
		{
			printf("猜⼤了\n");
		}
		else
		{
			printf("恭喜你，猜对了\n");
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("你失败了，正确值是:%d\n", r);
	}
}
void menu()
{
	printf("***********************\n");
	printf("****** 1. play ******\n");
	printf("****** 0. exit ******\n");
	printf("***********************\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(null));
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("选择错误，重新选择\n");
			break;
		}
	} while (input);
	return 0;
}